home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
cpp_libs
/
answrbok
/
6_7.lha
/
6_7
/
6_7.c
next >
Wrap
Text File
|
1993-08-08
|
2KB
|
110 lines
* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */
* The C++ Answer Book */
* Tony Hansen */
* All rights reserved. */
* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */
* The C++ Answer Book */
* Tony Hansen */
* All rights reserved. */
/ Exercise 6.7
/ print out the conversions and
/ values for each expression
include <stream.h>
truct X
int i;
X(int in)
{
cout << "converting int " << in << " to X\n";
i = in;
}
operator+(int in)
{
cout << "adding X " << i << " + int " << in << "\n";
int ret = i + in;
cout << "op+(X,int) returns " << ret << "\n";
return ret;
}
;
truct Y
int i;
Y(X Xin)
{
cout << "converting X " << Xin.i << " to Y\n";
i = Xin.i;
}
operator+(X Xin)
{
cout << "adding Y " << i << " to X " <<
Xin.i << "\n";
int ret = i + Xin.i;
cout << "op+(Y,X) returns " << ret << "\n";
return ret;
}
operator int()
{
cout << "converting Y " << i <<
" to int\n";
return i;
}
;
X operator* (X Xin, Y Yin)
cout << "multiplying X " << Xin.i << " times Y " <<
Yin.i << "\n";
X Xout(Xin.i * Yin.i);
cout << "op*(X, Y) returns " << Xout.i << "\n";
return Xout;
nt f(X Xin)
cout << "calling f(X = " << Xin.i << ")\n";
return Xin.i;
X x = 1;
y = x;
nt i = 2;
ain()
int ret = i + 10;
cout << "i + 10 = " << ret << "\n";
ret = y + 10;
cout << "y + 10 = " << ret << "\n";
ret = y + 10 * y;
cout << "y + 10 * y = " << ret << "\n";
ret = x + y + i;
cout << "x + y + i = " << ret << "\n";
ret = x * x + i;
cout << "x * x + i = " << ret << "\n";
ret = f(7);
cout << "f(7) = " << ret << "\n";
/ illegal conversion
/ ret = f(y);
/ cout << "f(y) = " << ret << "\n";
ret = y + y;
cout << "y + y = " << ret << "\n";
ret = 106 + y;
cout << "106 + y = " << ret << "\n";
return 0;